/*
 * Copyright 2022-2029 heshuixing(https://gitee.com/heshuixing)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mercury.ec.framework.air.core.client.impl.sunstn.dto.sd;

import com.mercury.ec.framework.air.core.client.impl.sunstn.dto.SunstnCommonReqDTO;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * SD Request DTO
 *
 * @author hesx
 */
@Data
@NoArgsConstructor
public class SunstnSdReqDTO extends SunstnCommonReqDTO {
    /**
     * 【必选】航班信息 为 编 码 后 字 符 串 ， 明 文 格 式 如 下 ：
     * air_info=CA8881|Y|CTUPEK|2007-08-12$CA8887|Q|PEKCTU|2 007-08-16
     * 每个航段以字符“$”间隔，每个航段内的信息以“|”间隔，
     * 每个航段的项目顺序不能改变(注)
     */
    private String air_info;

    /**
     * 【必选】乘客信息的编码后字符串，明文格式如下：
     * adu(chd,inf)|乘机人 1|ssr foid(ssr docs)指令行|手机号码
     * $chdy|儿童 1| ssr foid(ssr docs)指令行|手机号码|生日
     * 说明:每个乘客以字符“$”间隔，每个乘机人的信息以
     * “|”间隔，每个乘机人的项目顺序不能改变（adu:成人
     * chdY|F|C:儿童 inf:婴儿）
     */
    private String ssr_info;

    /**
     * 【必选】从现在算起的订座时限分钟数，例如，现在是 9 月 20
     * 日 10:20，tktl_minutes=720,则预订编码中的出票时限为
     * 9 月 20 日 22:20
     */
    private Integer tktl_minutes = 720;

    /**
     * 订座时限的绝对时间，格式为“2007-8-21 13:20”
     */
    private String tktl_time;

    /**
     * 预订指令中的 CT 项内容
     */
    private String ct;

    /**
     * 预订编码中的 remark 项内容
     */
    private String remark;

    /**
     * 预订编码所选用的 office 号 ， 这 将 会 出 现 在
     * TKTL/1800/./OfficeCode 中，同时，如果系统有此 office
     * 号的 PID，则优先选择此 PID 预订
     */
    private String officecode;

    /**
     * 是否允许预订 LL 状态（申请状态）的编码
     */
    private Integer apply = 0;

    /**
     * 需要在预订信息中加入的自定义行（例如大客户码、OSI
     * CTCT 等等），需编码，多行指令|分隔
     */
    private String sline;

    /**
     * 儿童姓名后是否加入出生日期（不同航空公司规定不同）
     */
    private Integer chd_birth_name = 1;

    /**
     * 儿童预订时，需要给出成人编码
     */
    private Integer adu_pnr;

    /**
     * 不在预定中插入“CT REM 日期 时间 预订帐号”信息
     */
    private Integer no_rem;

    /**
     * 预订时是否以 LL 或 SA 等其他方式预订
     */
    private Integer mode;

    @Override
    public String getCmd() {
        return "sd";
    }
}
